import re


version_info = (0, 9, 0)
versionstr = '.'.join(map(str, version_info))

#set regular expression pattern for event type and reason
#remark pattern
ipv4_pattern = re.compile('(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))')
ipv6_pattern = re.compile('([0-9a-fA-F]{1,4}(:[0-9a-fA-F]{1,4}){7})')
ipv6_bad_pattern = re.compile('([0-9a-fA-F]{15}:[0-9]{1,4}(?=\||$))')
id_pattern = re.compile('([0-9a-fA-F]{13,39})')
#macaddr_pattern = re.compile('(([0-9a-fA-F]{2}([-:][0-9a-fA-F]{2}){5})|([0-9a-fA-F]{12}))(?=\||$)')
macaddr_pattern = re.compile('(?:^|\|)(([0-9a-fA-F]{2}([-:][0-9a-fA-F]{2}){5})|([0-9a-fA-F]{12}))(?:\||$)')

#event type[1]
#main CTP format
repa_et1_s1_m1 = re.compile('IP地址：([^， ]*).*MAC地址：([^， ]*).*协议信息：.*接口端产品信息：.*用户端产品信息：([^， ]*).*Fron[td]ID：([^，]*).*SessionID：([^，]*).*登录备注：([^， ]*).*ppID：([^， ]*).*$')
#CTP2mini his format(day < 20250829)
repa_et1_s1_m2 = re.compile('IP地址：([^， ]*).*MAC地址：([^， ]*).*协议信息：.*接口端产品信息：.*用户端产品信息：([^， ]*).*用户端AppID：([^， ]*).*前置编号：([^，]*).*登录备注：(.*)$')
#CTP2mini new format(day >= 20250829)
repa_et1_s2_m1 = re.compile('\[SessionID：([^]]*).*IP地址：([^， ]*).*MAC地址：([^， ]*).*协议信息：.*接口端产品信息：.*用户端产品信息：([^， ]*).*用户端AppID：([^， ]*).*前置编号：([^，]*).*登录备注：([^]]*).*\]$')
#ClientLoginRemark relayclient info
repa_et1_s3_m1 = re.compile('BrokerID：.*UserID：.*Fron[td]ID：([^， ]*).*SessionID：([^， ]*).*ClientLoginRemark：(.*)$')

#event type[3]
#order type
#main CTP format
repa_et3_s1_m1 = re.compile('.*本地报单号：.*经纪公司报单编号：.*IP地址：([^， ]*).*MAC地址：([^， ]*).*Fron[td]ID：([^， ]*).*SessionID：([^， ]*).*AppID：([^， ]*).*$')
#CTP2mini his format(day < 20250829)
repa_et3_s1_m2 = re.compile('.*本地报单号：.*经纪公司报单编号：.*IP地址：([^， ]*).*MAC地址：([^， ]*).*用户端AppID：([^， ]*).*$')
#CTP2mini new format(day >= 20250829)
repa_et3_s2_m1 = re.compile('\[SessionID：([^]]*).*席位号：.*本地报单号：.*经纪公司报单引用：.*IP地址：([^， ]*).*MAC地址：([^， ]*).*用户端AppID：([^] ]*).*\]$')
#cancel order type
#CTPmain (ver >= 6.7.8)
repa_et3_s3_m1 = re.compile('交易所代码：.*系统报单号：.*本地报单号：.*报单引用：.*前置编号：.*会话编号：.*IP地址：([^， ]*).*MAC地址：([^， ]*).*撤单前置编号：([^，]*).*撤单会话编号：([^，]*).*$')
#CTP2mini his format(day < 20250829)
repa_et3_s3_m2 = re.compile('交易所代码：.*系统报单号：.*本地报单号：.*报单引用：.*前置编号：([^， ]*).*会话编号：([^， ]*).*IP地址：([^， ]*).*MAC地址：([^， ]*).*用户端AppID：([^， ]*).*$')
#CTPmain (ver < 6.7.8)
repa_et3_s3_m3 = re.compile('交易所代码：.*系统报单号：.*本地报单号：.*报单引用：.*前置编号：([^， ]*).*会话编号：([^， ]*).*IP地址：([^， ]*).*MAC地址：([^， ]*).*是否操作员删单：.*$')
#CTP2mini new format(day >= 20250829)
repa_et3_s4_m1 = re.compile('\[委托SessionID：.*\]\[撤单SessionID:([^]]*).*席位号：.*交易所代码：.*系统报单号：.*本地报单号：.*报单引用：.*前置编号：([^，]*).*IP地址：([^， ]*).*MAC地址：([^， ]*).*用户端AppID：([^] ]*).*\]$')
#exchange cancel failure
repa_et3_s5_m1 = re.compile('.*交易所代码：.*系统报单号：.*本地报单号：.*报单引用：.*撤单引用：.*前置编号：([^， ]*).*会话编号：([^， ]*).*$')


#event type[4]
#order failure type
#CTPmain
repa_et4_s1_m1 = re.compile('.*本地报单号：.*经纪公司报单编号：.*前置编号：([^， ]*).*会话编号：([^， ]*).*IP地址：([^， ]*).*MAC地址：([^， ]*).*$')
#CTP2mini
repa_et4_s1_m2 = re.compile('.*本地报单号：.*经纪公司报单引用：.*IP地址：([^， ]*).*MAC地址：([^， ]*).*用户端AppID：([^， ]*).*$')

#cancle order failure type
#CTPmain
repa_et4_s2_m1 = re.compile('.*交易所代码：.*系统报单号：.*本地报单号：.*报单引用：.*前置编号：([^， ]*).*会话编号：([^， ]*).*IP地址：([^， ]*).*MAC地址：([^， ]*).*$')
#CTP2mini
repa_et4_s2_m2 = re.compile('.*交易所代码：.*系统报单号：.*本地报单号：.*报单引用：.*前置编号：([^， ]*).*会话编号：([^， ]*).*IP地址：([^， ]*).*MAC地址：([^， ]*).*用户端AppID：([^， ]*).*$')

#event type[7]
#client info report
#collect success
repa_et7_s1_m1 = re.compile('.*FrontID：([^， ]*).*SessionID：([^， ]*).*sysLen：([^， ]*).*AdditionalInfo：(.*)$')


if __name__ == '__main__':
	import sys
	import os
	if (sys.argv[1] == '-v'):
		scriptname = os.path.basename(__file__)
		print(f"{scriptname}:{versionstr}")
		sys.exit(0)